home *** CD-ROM | disk | FTP | other *** search
-
- /*
- ==============================================================================
-
- SOURCE FOR GLOBALVARS_T C STRUCTURE
-
- ==============================================================================
- */
-
- //
- // system globals
- //
- entity self;
- entity other;
- entity world;
- float time;
- float frametime;
-
- float force_retouch; // force all entities to touch triggers
- // next frame. this is needed because
- // non-moving things don't normally scan
- // for triggers, and when a trigger is
- // created (like a teleport trigger), it
- // needs to catch everything.
- // decremented each frame, so set to 2
- // to guarantee everything is touched
- string mapname;
-
- float deathmatch;
- float coop;
- float teamplay;
-
- float serverflags; // propagated from level to level, used to
- // keep track of completed episodes
-
- float total_secrets;
- float total_monsters;
-
- float found_secrets; // number of secrets found
- float killed_monsters; // number of monsters killed
-
-
- // spawnparms are used to encode information about clients across server
- // level changes
- float parm1, parm2, parm3, parm4, parm5, parm6, parm7, parm8, parm9, parm10, parm11, parm12, parm13, parm14, parm15, parm16;
-
- //
- // global variables set by built in functions
- //
- vector v_forward, v_up, v_right; // set by makevectors()
-
- // set by traceline / tracebox
- float trace_allsolid;
- float trace_startsolid;
- float trace_fraction;
- vector trace_endpos;
- vector trace_plane_normal;
- float trace_plane_dist;
- entity trace_ent;
- float trace_inopen;
- float trace_inwater;
-
- entity msg_entity; // destination of single entity writes
-
- //
- // required prog functions
- //
- void() main; // only for testing
-
- void() StartFrame;
-
- void() PlayerPreThink;
- void() PlayerPostThink;
-
- void() ClientKill;
- void() ClientConnect;
- void() PutClientInServer; // call after setting the parm1... parms
- void() ClientDisconnect;
-
- void() SetNewParms; // called when a client first connects to
- // a server. sets parms so they can be
- // saved off for restarts
-
- void() SetChangeParms; // call to set parms for self so they can
- // be saved for a level transition
-
-
- //================================================
- void end_sys_globals; // flag for structure dumping
- //================================================
-
- /*
- ==============================================================================
-
- SOURCE FOR ENTVARS_T C STRUCTURE
-
- ==============================================================================
- */
-
- //
- // system fields (*** = do not set in prog code, maintained by C code)
- //
- .float modelindex; // *** model index in the precached list
- .vector absmin, absmax; // *** origin + mins / maxs
-
- .float ltime; // local time for entity
- .float movetype;
- .float solid;
-
- .vector origin; // ***
- .vector oldorigin; // ***
- .vector velocity;
- .vector angles;
- .vector avelocity;
-
- .vector punchangle; // temp angle adjust from damage or recoil
-
- .string classname; // spawn function
- .string model;
- .float frame;
- .float skin;
- .float effects;
-
- .vector mins, maxs; // bounding box extents reletive to origin
- .vector size; // maxs - mins
-
- .void() touch;
- .void() use;
- .void() think;
- .void() blocked; // for doors or plats, called when can't push other
-
- .float nextthink;
- .entity groundentity;
-
- // stats
- .float health;
- .float frags;
- .float weapon; // one of the IT_SHOTGUN, etc flags
- .string weaponmodel;
- .float weaponframe;
- .float currentammo;
- .float ammo_shells, ammo_nails, ammo_rockets, ammo_cells;
-
- .float items; // bit flags
-
- .float takedamage;
- .entity chain;
- .float deadflag;
-
- .vector view_ofs; // add to origin to get eye point
-
-
- .float button0; // fire
- .float button1; // use
- .float button2; // jump
-
- .float impulse; // weapon changes
-
- .float fixangle;
- .vector v_angle; // view / targeting angle for players
- .float idealpitch; // calculated pitch angle for lookup up slopes
-
-
- .string netname;
-
- .entity enemy;
-
- .float flags;
-
- .float colormap;
- .float team;
-
- .float max_health; // players maximum health is stored here
-
- .float teleport_time; // don't back up
-
- .float armortype; // save this fraction of incoming damage
- .float armorvalue;
-
- .float waterlevel; // 0 = not in, 1 = feet, 2 = wast, 3 = eyes
- .float watertype; // a contents value
-
- .float ideal_yaw;
- .float yaw_speed;
-
- .entity aiment;
-
- .entity goalentity; // a movetarget or an enemy
-
- .float spawnflags;
-
- .string target;
- .string targetname;
-
- // damage is accumulated through a frame. and sent as one single
- // message, so the super shotgun doesn't generate huge messages
- .float dmg_take;
- .float dmg_save;
- .entity dmg_inflictor;
-
- .entity owner; // who launched a missile
- .vector movedir; // mostly for doors, but also used for waterjump
-
- .string message; // trigger messages
-
- .float sounds; // either a cd track number or sound number
-
- .string noise, noise1, noise2, noise3; // contains names of wavs to play
-
- //================================================
- void end_sys_fields; // flag for structure dumping
- //================================================
-
-
- // TM Bot - begin new entity fields
- .entity bot; // pointer to the bot
- .float bot_flag; // existence of bot (TRUE or FALSE)
- .float bot_auto; // auto mode of bot (TRUE or FALSE)
- .float move_flag; // movement of bot (STAND, WALK, or RUN)
- .float auto_fire; // status of bot's auto fire (TRUE or FALSE)
- //.float bot_lit; // status of bot's glow
- // TM Bot - end new entity fields
-
- /*
- ==============================================================================
-
- VARS NOT REFERENCED BY C CODE
-
- ==============================================================================
- */
-
-
- //
- // constants
- //
-
- float FALSE = 0;
- float TRUE = 1;
-
- // edict.flags
- float FL_FLY = 1;
- float FL_SWIM = 2;
- float FL_CLIENT = 8; // set for all client edicts
- float FL_INWATER = 16; // for enter / leave water splash
- float FL_MONSTER = 32;
- float FL_GODMODE = 64; // player cheat
- float FL_NOTARGET = 128; // player cheat
- float FL_ITEM = 256; // extra wide size for bonus items
- float FL_ONGROUND = 512; // standing on something
- float FL_PARTIALGROUND = 1024; // not all corners are valid
- float FL_WATERJUMP = 2048; // player jumping out of water
- float FL_JUMPRELEASED = 4096; // for jump debouncing
-
- // edict.movetype values
- float MOVETYPE_NONE = 0; // never moves
- //float MOVETYPE_ANGLENOCLIP = 1;
- //float MOVETYPE_ANGLECLIP = 2;
- float MOVETYPE_WALK = 3; // players only
- float MOVETYPE_STEP = 4; // discrete, not real time unless fall
- float MOVETYPE_FLY = 5;
- float MOVETYPE_TOSS = 6; // gravity
- float MOVETYPE_PUSH = 7; // no clip to world, push and crush
- float MOVETYPE_NOCLIP = 8;
- float MOVETYPE_FLYMISSILE = 9; // fly with extra size against monsters
- float MOVETYPE_BOUNCE = 10;
- float MOVETYPE_BOUNCEMISSILE = 11; // bounce with extra size
-
- // edict.solid values
- float SOLID_NOT = 0; // no interaction with other objects
- float SOLID_TRIGGER = 1; // touch on edge, but not blocking
- float SOLID_BBOX = 2; // touch on edge, block
- float SOLID_SLIDEBOX = 3; // touch on edge, but not an onground
- float SOLID_BSP = 4; // bsp clip, touch on edge, block
-
- // range values
- float RANGE_MELEE = 0;
- float RANGE_NEAR = 1;
- float RANGE_MID = 2;
- float RANGE_FAR = 3;
-
- // deadflag values
-
- float DEAD_NO = 0;
- float DEAD_DYING = 1;
- float DEAD_DEAD = 2;
- float DEAD_RESPAWNABLE = 3;
-
- // takedamage values
-
- float DAMAGE_NO = 0;
- float DAMAGE_YES = 1;
- float DAMAGE_AIM = 2;
-
- // items
- float IT_AXE = 4096;
- float IT_SHOTGUN = 1;
- float IT_SUPER_SHOTGUN = 2;
- float IT_NAILGUN = 4;
- float IT_SUPER_NAILGUN = 8;
- float IT_GRENADE_LAUNCHER = 16;
- float IT_ROCKET_LAUNCHER = 32;
- float IT_LIGHTNING = 64;
- float IT_EXTRA_WEAPON = 128;
-
- float IT_SHELLS = 256;
- float IT_NAILS = 512;
- float IT_ROCKETS = 1024;
- float IT_CELLS = 2048;
-
- float IT_ARMOR1 = 8192;
- float IT_ARMOR2 = 16384;
- float IT_ARMOR3 = 32768;
- float IT_SUPERHEALTH = 65536;
-
- float IT_KEY1 = 131072;
- float IT_KEY2 = 262144;
-
- float IT_INVISIBILITY = 524288;
- float IT_INVULNERABILITY = 1048576;
- float IT_SUIT = 2097152;
- float IT_QUAD = 4194304;
-
- // point content values
-
- float CONTENT_EMPTY = -1;
- float CONTENT_SOLID = -2;
- float CONTENT_WATER = -3;
- float CONTENT_SLIME = -4;
- float CONTENT_LAVA = -5;
- float CONTENT_SKY = -6;
-
- float STATE_TOP = 0;
- float STATE_BOTTOM = 1;
- float STATE_UP = 2;
- float STATE_DOWN = 3;
-
- vector VEC_ORIGIN = '0 0 0';
- vector VEC_HULL_MIN = '-16 -16 -24';
- vector VEC_HULL_MAX = '16 16 32';
-
- vector VEC_HULL2_MIN = '-32 -32 -24';
- vector VEC_HULL2_MAX = '32 32 64';
-
- // protocol bytes
- float SVC_TEMPENTITY = 23;
- float SVC_KILLEDMONSTER = 27;
- float SVC_FOUNDSECRET = 28;
- float SVC_INTERMISSION = 30;
- float SVC_FINALE = 31;
- float SVC_CDTRACK = 32;
- float SVC_SELLSCREEN = 33;
-
-
- float TE_SPIKE = 0;
- float TE_SUPERSPIKE = 1;
- float TE_GUNSHOT = 2;
- float TE_EXPLOSION = 3;
- float TE_TAREXPLOSION = 4;
- float TE_LIGHTNING1 = 5;
- float TE_LIGHTNING2 = 6;
- float TE_WIZSPIKE = 7;
- float TE_KNIGHTSPIKE = 8;
- float TE_LIGHTNING3 = 9;
- float TE_LAVASPLASH = 10;
- float TE_TELEPORT = 11;
-
- // sound channels
- // channel 0 never willingly overrides
- // other channels (1-7) allways override a playing sound on that channel
- float CHAN_AUTO = 0;
- float CHAN_WEAPON = 1;
- float CHAN_VOICE = 2;
- float CHAN_ITEM = 3;
- float CHAN_BODY = 4;
-
- float ATTN_NONE = 0;
- float ATTN_NORM = 1;
- float ATTN_IDLE = 2;
- float ATTN_STATIC = 3;
-
- // update types
-
- float UPDATE_GENERAL = 0;
- float UPDATE_STATIC = 1;
- float UPDATE_BINARY = 2;
- float UPDATE_TEMP = 3;
-
- // entity effects
-
- float EF_BRIGHTFIELD = 1;
- float EF_MUZZLEFLASH = 2;
- float EF_BRIGHTLIGHT = 4;
- float EF_DIMLIGHT = 8;
-
-
- // messages
- float MSG_BROADCAST = 0; // unreliable to all
- float MSG_ONE = 1; // reliable to one (msg_entity)
- float MSG_ALL = 2; // reliable to all
- float MSG_INIT = 3; // write to the init string
-
- //================================================
-
- //
- // globals
- //
- float movedist;
- float gameover; // set when a rule exits
-
- string string_null; // null string, nothing should be held here
- float empty_float;
-
- entity newmis; // launch_spike sets this after spawning it
-
- entity activator; // the entity that activated a trigger or brush
-
- entity damage_attacker; // set by T_Damage
- float framecount;
-
- float skill;
-
- //================================================
-
- //
- // world fields (FIXME: make globals)
- //
- .string wad;
- .string map;
- .float worldtype; // 0=medieval 1=metal 2=base
-
- //================================================
-
- .string killtarget;
-
- //
- // quakeed fields
- //
- .float light_lev; // not used by game, but parsed by light util
- .float style;
-
-
- //
- // monster ai
- //
- .void() th_stand;
- .void() th_walk;
- .void() th_run;
- .void() th_missile;
- .void() th_melee;
- .void(entity attacker, float damage) th_pain;
- .void() th_die;
-
- .entity oldenemy; // mad at this player before taking damage
-
- .float speed;
-
- .float lefty;
-
- .float search_time;
- .float attack_state;
-
- float AS_STRAIGHT = 1;
- float AS_SLIDING = 2;
- float AS_MELEE = 3;
- float AS_MISSILE = 4;
-
- //
- // player only fields
- //
- .float walkframe;
-
- .float attack_finished;
- .float pain_finished;
-
- .float invincible_finished;
- .float invisible_finished;
- .float super_damage_finished;
- .float radsuit_finished;
-
- .float invincible_time, invincible_sound;
- .float invisible_time, invisible_sound;
- .float super_time, super_sound;
- .float rad_time;
- .float fly_sound;
-
- .float axhitme;
-
- .float show_hostile; // set to time+0.2 whenever a client fires a
- // weapon or takes damage. Used to alert
- // monsters that otherwise would let the player go
- .float jump_flag; // player jump flag
- .float swim_flag; // player swimming sound flag
- .float air_finished; // when time > air_finished, start drowning
- .float bubble_count; // keeps track of the number of bubbles
- .string deathtype; // keeps track of how the player died
-
- //
- // object stuff
- //
- .string mdl;
- .vector mangle; // angle at start
-
- .vector oldorigin; // only used by secret door
-
- .float t_length, t_width;
-
-
- //
- // doors, etc
- //
- .vector dest, dest1, dest2;
- .float wait; // time from firing to restarting
- .float delay; // time from activation to firing
- .entity trigger_field; // door's trigger entity
- .string noise4;
-
- //
- // monsters
- //
- .float pausetime;
- .entity movetarget;
-
-
- //
- // doors
- //
- .float aflag;
- .float dmg; // damage done by door when hit
-
- //
- // misc
- //
- .float cnt; // misc flag
-
- //
- // subs
- //
- .void() think1;
- .vector finaldest, finalangle;
-
- //
- // triggers
- //
- .float count; // for counting triggers
-
-
- //
- // plats / doors / buttons
- //
- .float lip;
- .float state;
- .vector pos1, pos2; // top and bottom positions
- .float height;
-
- //
- // sounds
- //
- .float waitmin, waitmax;
- .float distance;
- .float volume;
-
-
-
-
- //===========================================================================
-
-
- //
- // builtin functions
- //
-
- void(vector ang) makevectors = #1; // sets v_forward, etc globals
- void(entity e, vector o) setorigin = #2;
- void(entity e, string m) setmodel = #3; // set movetype and solid first
- void(entity e, vector min, vector max) setsize = #4;
- // #5 was removed
- void() break = #6;
- float() random = #7; // returns 0 - 1
- void(entity e, float chan, string samp, float vol, float atten) sound = #8;
- vector(vector v) normalize = #9;
- void(string e) error = #10;
- void(string e) objerror = #11;
- float(vector v) vlen = #12;
- float(vector v) vectoyaw = #13;
- entity() spawn = #14;
- void(entity e) remove = #15;
-
- // sets trace_* globals
- // nomonsters can be:
- // An entity will also be ignored for testing if forent == test,
- // forent->owner == test, or test->owner == forent
- // a forent of world is ignored
- void(vector v1, vector v2, float nomonsters, entity forent) traceline = #16;
-
- entity() checkclient = #17; // returns a client to look for
- entity(entity start, .string fld, string match) find = #18;
- string(string s) precache_sound = #19;
- string(string s) precache_model = #20;
- void(entity client, string s)stuffcmd = #21;
- entity(vector org, float rad) findradius = #22;
- void(string s) bprint = #23;
- void(entity client, string s) sprint = #24;
- void(string s) dprint = #25;
- string(float f) ftos = #26;
- string(vector v) vtos = #27;
- void() coredump = #28; // prints all edicts
- void() traceon = #29; // turns statment trace on
- void() traceoff = #30;
- void(entity e) eprint = #31; // prints an entire edict
- float(float yaw, float dist) walkmove = #32; // returns TRUE or FALSE
- // #33 was removed
- float(float yaw, float dist) droptofloor= #34; // TRUE if landed on floor
- void(float style, string value) lightstyle = #35;
- float(float v) rint = #36; // round to nearest int
- float(float v) floor = #37; // largest integer <= v
- float(float v) ceil = #38; // smallest integer >= v
- // #39 was removed
- float(entity e) checkbottom = #40; // true if self is on ground
- float(vector v) pointcontents = #41; // returns a CONTENT_*
- // #42 was removed
- float(float f) fabs = #43;
- vector(entity e, float speed) aim = #44; // returns the shooting vector
- float(string s) cvar = #45; // return cvar.value
- void(string s) localcmd = #46; // put string into local que
- entity(entity e) nextent = #47; // for looping through all ents
- void(vector o, vector d, float color, float count) particle = #48;// start a particle effect
- void() ChangeYaw = #49; // turn towards self.ideal_yaw
- // at self.yaw_speed
- // #50 was removed
- vector(vector v) vectoangles = #51;
-
- //
- // direct client message generation
- //
- void(float to, float f) WriteByte = #52;
- void(float to, float f) WriteChar = #53;
- void(float to, float f) WriteShort = #54;
- void(float to, float f) WriteLong = #55;
- void(float to, float f) WriteCoord = #56;
- void(float to, float f) WriteAngle = #57;
- void(float to, string s) WriteString = #58;
- void(float to, entity s) WriteEntity = #59;
-
- //
- // broadcast client message generation
- //
-
- // void(float f) bWriteByte = #59;
- // void(float f) bWriteChar = #60;
- // void(float f) bWriteShort = #61;
- // void(float f) bWriteLong = #62;
- // void(float f) bWriteCoord = #63;
- // void(float f) bWriteAngle = #64;
- // void(string s) bWriteString = #65;
- // void(entity e) bWriteEntity = #66;
-
- void(float step) movetogoal = #67;
-
- string(string s) precache_file = #68; // no effect except for -copy
- void(entity e) makestatic = #69;
- void(string s) changelevel = #70;
-
- //#71 was removed
-
- void(string var, string val) cvar_set = #72; // sets cvar.value
-
- void(entity client, string s) centerprint = #73; // sprint, but in middle
-
- void(vector pos, string samp, float vol, float atten) ambientsound = #74;
-
- string(string s) precache_model2 = #75; // registered version only
- string(string s) precache_sound2 = #76; // registered version only
- string(string s) precache_file2 = #77; // registered version only
-
- void(entity e) setspawnparms = #78; // set parm1... to the
- // values at level start
- // for coop respawn
-
- //============================================================================
-
- //
- // subs.qc
- //
- void(vector tdest, float tspeed, void() func) SUB_CalcMove;
- void(entity ent, vector tdest, float tspeed, void() func) SUB_CalcMoveEnt;
- void(vector destangle, float tspeed, void() func) SUB_CalcAngleMove;
- void() SUB_CalcMoveDone;
- void() SUB_CalcAngleMoveDone;
- void() SUB_Null;
- void() SUB_UseTargets;
- void() SUB_Remove;
-
- //
- // combat.qc
- //
- void(entity targ, entity inflictor, entity attacker, float damage) T_Damage;
-
-
- float (entity e, float healamount, float ignore) T_Heal; // health function
-
- float(entity targ, entity inflictor) CanDamage;
-
-
-